package tech.aistar.corejava.test.test;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * 订单处理系统 原型模式实现
 现在有一个订单处理系统，里面有一个保存订单的业务功能，需求：
 1.每当订单的预定产品数量超过1000的时候，就需要把订单拆成两份订单来保存。
 2.如果拆成两份后还是超过1000，则继续拆分，直到每份产品预订数量不超过1000.
 根据业务，目前的订单系统分成两种，一种是个人订单、一种是公司订单。
 客户名称、产品对象（ID，Name），订购产品数量。
 公司名称、产品对象（ID，Name），订购产品数量。

 ---------------------
 版权声明：本文为CSDN博主「Leo-z」的原创文章，遵循CC 4.0 by-sa版权协议，转载请附上原文出处链接及本声明。
 原文链接：https://blog.csdn.net/qq_41113081/article/details/89034976
 * @author success
 * @version 1.0
 * @description:本类用来演示:
 * @date 2019/8/5 0005
 */
public class ClientOrder {
    public static final int MAX_NUM = 10;

    public static void main(String[] args) throws CloneNotSupportedException {
        List list = new ArrayList<Order>();
        Product product = new Product(1, "iPhone");
        Order order = new Order("BaiDu", product, 100);
        //list.add(order);
        while (order.getNum() > MAX_NUM) {
            Order temp = (Order) order.clone();
            temp.setNum(MAX_NUM);
            list.add(temp);
            order.setNum(order.getNum() - MAX_NUM);
        }
        list.add(order);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).toString());
        }
        System.out.println(list.size());
    }
}
